package json.jackson;

import com.fasterxml.jackson.annotation.JsonAnySetter;
import com.fasterxml.jackson.annotation.JsonCreator;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.fasterxml.jackson.annotation.JsonProperty;
import json.User;

import java.util.Date;
import java.util.HashMap;

/**
 * @describe: 部分注解的使用
 * @author: houkai
 */
public class JacksonAnnotation {

    /*用于构造方法，和 @JsonProperty 配合使用，适用有参数的构造方法。*/
    @JsonCreator
    public JacksonAnnotation() {
    }

    /*用于属性，把属性的名称序列化时转换为另外一个名称*/
    @JsonProperty("birth_date")
    /*用于属性或者方法，把属性的格式序列化时转换成指定的格式。示例：*/
    @JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd HH:mm")
    private Date birthDate;
    /*用于类,指定属性在序列化时 json 中的顺序*/
    private User user;
    /*用于属性或者方法，设置未反序列化的属性 的属性名和值作为键值存储到 map 中*/
    @JsonAnySetter
    private HashMap map;
    @JsonAnySetter
    private HashMap map1;

    public User getUser() {
        return user;
    }

    public void setUser(User user) {
        this.user = user;
    }

    public HashMap getMap() {
        return map;
    }

    public void setMap(HashMap map) {
        this.map = map;
    }

    public HashMap getMap1() {
        return map1;
    }

    public void setMap1(HashMap map1) {
        this.map1 = map1;
    }

    public Date getBirthDate() {
        return birthDate;
    }

    public void setBirthDate(Date birthDate) {
        this.birthDate = birthDate;
    }


}
